Default Region Qualifiers

The rules the compiler uses for filling in @region qualifiers when they are omitted from pointer types are a little complicated, but they are designed to avoid clutter in the common case:

Thus, be warned that

typedef int * foo_t;
void g(foo_t);

is different than

void g(int *);

The reason is clear when we fill in the default region qualifiers. In the first case, we have:

typedef int *@region(`H) foo_t;
void g(foo_t);

whereas in the second case we have:

void g(int *@region(`r));